﻿//using FrameServer.Net;
//using System;
//using System.Collections.Generic;

//namespace FrameServer
//{
//    class BattleMgr:Singleton<BattleMgr>
//    {
//        private int curBattleID = 0;

//        //记录了所有的对局，在对局创建时新增，在正式结束时移除
//        private Dictionary<int, Battle> battleDict = new Dictionary<int, Battle>();//battleID-battle

//        //用来记录玩家在哪个对局中，一般用于断线重连检测玩家是否还在对局中， 在玩家进入战局时新增，在正式结束时移除
//        public Dictionary<int, int> dic_UidBattleid = new Dictionary<int, int>();//uid-battleID 


//        public void BeginCreateBattle(int mode, List<MatchPlayerEntity> confirmedClients)
//        {
//            curBattleID++;
//            Battle battle = new Battle();
//            battle.CreateBattle(mode, curBattleID, confirmedClients, new Random().Next(1, 100));

//            AddBattle(battle);
//            foreach(var item in confirmedClients)
//            {
//                AddUserToBattle(item.uid, curBattleID);
//            }

//        }

//        public void AddBattle(Battle battle)
//        {
//            battleDict.Add(battle.battleID, battle);
//        }

        

//        public bool RemoveBattle(int battleID)
//        {
//            bool result = battleDict.Remove(battleID);
//            return result;
//        }

//        public void AddUserToBattle(int uid, int battleID)
//        {
//            if (dic_UidBattleid.ContainsKey(uid))
//            {
//                LogUtil.Log($"AddUserToBattle({uid}, {battleID})失败", LogLevel.WARNING);
//                return;
//            }
//            dic_UidBattleid.Add(uid, battleID);
//        }

//        public bool CheckInBattle(int uid)
//        {
//            return dic_UidBattleid.ContainsKey(uid);
//        }

//        public void RemoveUser(int uid)
//        {
//            dic_UidBattleid.Remove(uid);
//        }

//        public void RcvBattleReady(BattleReady battleReady, TCPClientPeer peer)
//        {
//            int battleID = battleReady.BattleUserInfo.BattleID;
//            if(!battleDict.TryGetValue(battleID, out Battle battle))
//            {
//                LogUtil.Log($"battleID:{battleID}-对局已失效，无法接收BattleReady");
//                peer.SendTcpMsg(S2CCode.ResponseGameOver, new Empty());
//                return;
//            }
//            battle.RcvReady(peer.uid);
//        }

//        public void RcvUpPlayerOperation(UpPlayerOperation upPlayerOperation)
//        {
//            PlayerOperation playerOperation = upPlayerOperation.PlayerOperation;
//            int battleID = playerOperation.BattleUserInfo.BattleID;
//            if (!battleDict.TryGetValue(battleID, out Battle battle))
//            {
//                LogUtil.Log($"battleID:{battleID}-对局已失效，无法接收RcvUpPlayerOperation");
//                int uid = playerOperation.BattleUserInfo.Uid;
//                TCPServer.Instance.GetTcpPeer(uid)?.SendTcpMsg(S2CCode.ResponseGameOver, new Empty());
//                return;
//            }
//            battle.RcvPlayerOperation(upPlayerOperation);
//        }

//        public void RcvRequestLackFrames(RequestLackFrames requestLackFrames)
//        {
//            int battleID = requestLackFrames.BattleUserInfo.BattleID;
//            if (!battleDict.TryGetValue(battleID, out Battle battle))
//            {
//                LogUtil.Log($"battleID:{battleID}-对局已失效，无法接收RcvRequestLackFrames");
//                int uid = requestLackFrames.BattleUserInfo.Uid;
//                TCPServer.Instance.GetTcpPeer(uid)?.SendTcpMsg(S2CCode.ResponseGameOver, new Empty());
//                return;
//            }
//            battle.RcvRequestLackFrames(requestLackFrames);
//        }

//        public void RcvRequestGameOver(RequestGameOver requestGameOver, TCPClientPeer peer)
//        {
//            int battleID = requestGameOver.BattleUserInfo.BattleID;
//            if (!battleDict.TryGetValue(battleID, out Battle battle))
//            {
//                LogUtil.Log($"battleID:{battleID}-对局已失效，无法接收RcvRequestGameOver");
//                peer.SendTcpMsg(S2CCode.ResponseGameOver, new Empty());
//                return;
//            }
//            battle.RcvGameOver(requestGameOver);
//        }

//        public void RcvReenter(Reenter reenter, TCPClientPeer peer)
//        {
//            int uid = reenter.Uid;
//            bool inBattle = CheckInBattle(uid);
//            if (inBattle == false)
//            {
//                ReenterResponse reconnectResponse = new ReenterResponse { Result = false };
//                peer.SendTcpMsg(S2CCode.ReenterResponse, reconnectResponse);
//            }
//            else
//            {
//                int battleID = dic_UidBattleid[uid];
//                if (!battleDict.TryGetValue(battleID, out Battle battle))
//                {
//                    LogUtil.Log($"battleID:{battleID}-对局已失效，无法接收Reenter");
//                    peer.SendTcpMsg(S2CCode.ResponseGameOver, new Empty());
//                    return;
//                }
//                battle.RcvReenter(uid);
//            }
//        }
//    }
//}
